﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using IUAP.DAL.Intranet;
using IUAP.DAL;
/// <summary>
/// Descripción breve de Nota
/// </summary>
namespace IUAP.BLL.Intranet
{
    public class Nota:BaseIntranet
    {
        public Nota()
        {

        }

        public Nota(int _id_nota
            , int _id_curso
            , int _id_periodo
            , string _alum_usua
            , int _on_asis_nota
            , int _on_trab_nota
            , int _on_inte_nota
            , int _on_otro_nota
            , int _pra1_nota
            , int _pra2_nota
            , int _parc_nota
            , int _fina_nota
            , int _sust_nota
            , int _prom_nota)
        {
            this.Id_nota = _id_nota;
            this.Id_curso = _id_curso;
            this.Id_periodo = _id_periodo;
            this.Alum_usua = _alum_usua;
            this.On_asis_nota = _on_asis_nota;
            this.On_trab_nota = _on_trab_nota;
            this.On_inte_nota = _on_inte_nota;
            this.On_otro_nota = _on_otro_nota;
            this.Pra1_nota = _pra1_nota;
            this.Pra2_nota = _pra2_nota;
            this.Parc_nota = _parc_nota;
            this.Fina_nota = _fina_nota;
            this.Sust_nota = _sust_nota;
            this.Prom_nota = _prom_nota;
        }

        int id_nota = 0;

        public int Id_nota
        {
            get { return id_nota; }
            set { id_nota = value; }
        }
        int id_curso = 0;

        public int Id_curso
        {
            get { return id_curso; }
            set { id_curso = value; }
        }
        int id_periodo = 0;

        public int Id_periodo
        {
            get { return id_periodo; }
            set { id_periodo = value; }
        }
        string alum_usua = "";

        public string Alum_usua
        {
            get { return alum_usua; }
            set { alum_usua = value; }
        }
        int on_asis_nota = 0;

        public int On_asis_nota
        {
            get { return on_asis_nota; }
            set { on_asis_nota = value; }
        }
        int on_trab_nota = 0;

        public int On_trab_nota
        {
            get { return on_trab_nota; }
            set { on_trab_nota = value; }
        }
        int on_inte_nota = 0;

        public int On_inte_nota
        {
            get { return on_inte_nota; }
            set { on_inte_nota = value; }
        }
        int on_otro_nota = 0;

        public int On_otro_nota
        {
            get { return on_otro_nota; }
            set { on_otro_nota = value; }
        }
        int pra1_nota = 0;

        public int Pra1_nota
        {
            get { return pra1_nota; }
            set { pra1_nota = value; }
        }
        int pra2_nota = 0;

        public int Pra2_nota
        {
            get { return pra2_nota; }
            set { pra2_nota = value; }
        }
        int parc_nota = 0;

        public int Parc_nota
        {
            get { return parc_nota; }
            set { parc_nota = value; }
        }
        int fina_nota = 0;

        public int Fina_nota
        {
            get { return fina_nota; }
            set { fina_nota = value; }
        }
        int sust_nota = 0;

        public int Sust_nota
        {
            get { return sust_nota; }
            set { sust_nota = value; }
        }
        int prom_nota = 0;

        public int Prom_nota
        {
            get { return prom_nota; }
            set { prom_nota = value; }
        }
        public bool Update()
        {
            return UpdateNota(this.Id_nota, this.On_asis_nota, this.On_trab_nota, this.On_inte_nota, this.On_otro_nota, this.Pra1_nota, this.Pra2_nota, this.Parc_nota, this.Fina_nota, this.Sust_nota, this.Prom_nota);
        }
        public static int InsertNota(int id_curso, int id_periodo, string alum_usua)
        {
            NotaDetalles record = new NotaDetalles(0, id_curso, id_periodo, alum_usua,0,0,0,0,0,0,0,0,0,0);
            int ret = SiteProvider.Intranet.InsertNota(record);
            BizObject.PurgeCacheItems("Intranet_Notas");
            return ret;
        }
        public static bool UpdateNota(int id_nota,int on_asis_nota, int on_trab_nota, int on_inte_nota,int on_otro_nota, int pra1_nota, int pra2_nota, int parc_nota, int fina_nota, int sust_nota, int prom_nota)
        {
            NotaDetalles record = new NotaDetalles(id_nota, 0, 0, "", on_asis_nota, on_trab_nota, on_inte_nota, on_otro_nota, pra1_nota, pra2_nota, parc_nota, fina_nota, sust_nota, prom_nota);
            bool ret = SiteProvider.Intranet.UpdateNota(record);
            BizObject.PurgeCacheItems("Intranet_Notas");
            return ret;
        }
        public static Nota GetNotasbyAlumno(int id_curso, int id_periodo, string id_alumno)
        {
            Nota nota = null;
            string key = "Intranet_Nota_" + id_curso.ToString();

            if (BaseIntranet.Settings.EnableCaching && BizObject.Cache[key] != null)
            {
                nota = (Nota)BizObject.Cache[key];
            }
            else
            {
                nota = GetNotaFromNotaDetalles(SiteProvider.Intranet.GetNotasbyAlumno(id_curso, id_periodo, id_alumno));
                BaseIntranet.CacheData(key, nota);
            }
            return nota;
        }
        private static Nota GetNotaFromNotaDetalles(NotaDetalles record)
        {
            if (record == null)
                return null;
            else
            {
                return new Nota(record.Id_nota, record.Id_curso, record.Id_periodo
                    ,record.Alum_usua,record.On_asis_nota,record.On_trab_nota,record.On_inte_nota,record.On_otro_nota
                    ,record.Pra1_nota,record.Pra2_nota,record.Parc_nota,record.Fina_nota,record.Sust_nota,record.Prom_nota);
            }
        }
    }
}